package com.zsz;

import com.zsz.domain.Student;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import javax.annotation.Resources;
import java.io.InputStream;
import java.util.List;

public class TsetMybatis {
    //测试方法，测试功能
    @Test
    public void insertStudent(){
        //访问mybatis,读取student数据
        //1.定义mybatis主配置文件的名称，从类路径的根开始（target.classes）
        String config="/mybatis.xml";
        //2.读取这个config表示的文件
        InputStream inputStream= Resources.class.getResourceAsStream(config);
        //3.创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //4.创建SqlSessionFactory对象
        SqlSessionFactory factory = sqlSessionFactoryBuilder.build(inputStream);
        //5.[重要]获取SqlSession对象，从SqlSessionFactory中获取SqlSession
        SqlSession sqlSession=factory.openSession();
        //6.[重要]指定要执行的sql语句的标识。sql映射文件的namespace+"."+标签的id值。
        String sqlId="com.zsz.dao.StudentDao"+"."+"insertStudent";
//        String sqlId="a"+"."+"b";
        //7.执行sql语句，通过sqlId找到语句
        Student student=new Student();
        student.setId(1006);
        student.setAge(25);
        student.setEmail("张飞@666");
        student.setName("张飞");
        int nums = sqlSession.insert(sqlId,student);

        //mybatis默认不是自动提交事务的，所以在insert，updata，delete后要手工提交事务
        sqlSession.commit();
        //8.输出结果
        System.out.println("执行insert结果="+nums);

        //9.关闭SqlSession对象
        sqlSession.close();

    }
}
